/*
 * Clase contenedora de datos de la tabla descargas
*/
package pojos;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import util.PojosFactory;

/** 
 * @author seiloprub
 */

public class Descargas implements Pojo{

    private int id;
    // claves foraneas
    private int desc_pedido;
    private int desc_producto;
    // Atributos
    private String desc_enlace;
    private Date desc_fecha;
    private Double desc_pago;
    private Double desc_valoracion;
    private String desc_comentario;
    
    public Descargas(int id, int desc_pedido, int desc_producto, 
                     String desc_enlace, Date desc_fecha, Double desc_pago, 
                     Double desc_valoracion, String desc_comentario) {
        darValores(id, desc_pedido, desc_producto, desc_enlace, desc_fecha, desc_pago, desc_valoracion, desc_comentario);
    }
    
    public Descargas(int desc_pedido, int desc_producto, 
                     String desc_enlace, Date desc_fecha, Double desc_pago, 
                     Double desc_valoracion, String desc_comentario) {
        darValores(-1, desc_pedido, desc_producto, desc_enlace, desc_fecha, desc_pago, desc_valoracion, desc_comentario);
    }
    
    private void darValores(int id, int desc_pedido, int desc_producto, String desc_enlace, Date desc_fecha, Double desc_pago, Double desc_valoracion, String desc_comentario) {
        this.id=id;
        this.desc_pedido=desc_pedido;
        this.desc_producto=desc_producto;
        this.desc_enlace=desc_enlace;
        this.desc_fecha=desc_fecha;
        this.desc_pago=desc_pago;
        this.desc_valoracion=desc_valoracion;
        this.desc_comentario=desc_comentario;
    }

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @return the pedido
     */
    public int getDesc_pedido() {
        return desc_pedido;
    }

    /**
     * @return the producto
     */
    public int getDesc_producto() {
        return desc_producto;
    }

    /**
     * @return the enlace
     */
    public String getDesc_enlace() {
        return desc_enlace;
    }

    /**
     * @return the fecha
     */
    public Date getDesc_fecha() {
        return desc_fecha;
    }

    /**
     * @return the pago
     */
    public Double getDesc_pago() {
        return desc_pago;
    }

    /**
     * @return the valoracion
     */
    public Double getDesc_valoracion() {
        return desc_valoracion;
    }

    /**
     * @return the comentario
     */
    public String getDesc_comentario() {
        return desc_comentario;
    }
    
    /**
     * guarda y actualiza el tipo de atributo
     */
    @Override
    public int guardar(Connection con) {
        int count=0;       
        if(this.id==-1) {
            //INSERTAR            
            String sql="INSERT INTO descargas(desc_pedido, desc_producto," 
                        + " desc_enlace, desc_fecha, desc_pago,"
                        + " desc_valoracion, desc_comentario)"
                        + " VALUES(?,?,?,?,?,?,?)";
            PreparedStatement stmt=null;
            try {
                stmt=con.prepareStatement(sql);
                //poner los valores
                stmt.setInt(1, this.getDesc_pedido());
                stmt.setInt(2, this.getDesc_producto());
                stmt.setString(3, this.getDesc_enlace());
                stmt.setString(4, PojosFactory.getSdf().format(this.getDesc_fecha()));
                stmt.setDouble(5, this.getDesc_pago());
                stmt.setDouble(6, this.getDesc_valoracion());
                stmt.setString(7, this.getDesc_comentario());
                // ejecutar
                count=stmt.executeUpdate();
            } catch (SQLException ex) {
                Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                try {
                    if (stmt!=null) {
                        stmt.close();
                    }
                } catch (SQLException ex) {
                    Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        } else {
            //ACTUALIZAR
            String sql="UPDATE descargas SET desc_pedido=?, desc_producto=?," 
                        + " desc_enlace=?, desc_fecha=?, desc_pago=?,"
                        + " desc_valoracion=?, desc_comentario=?"
                        + " WHERE id=?";
            PreparedStatement stmt=null;
            try {
                stmt=con.prepareStatement(sql);
                //poner los valores
                stmt.setInt(1, this.getDesc_pedido());
                stmt.setInt(2, this.getDesc_producto());
                stmt.setString(3, this.getDesc_enlace());
                stmt.setString(4, PojosFactory.getSdf().format(this.getDesc_fecha()));
                stmt.setDouble(5, this.getDesc_pago());
                stmt.setDouble(6, this.getDesc_valoracion());
                stmt.setString(7, this.getDesc_comentario());
                stmt.setInt(8, this.getId());
                // ejecutar
                count=stmt.executeUpdate();
            } catch (SQLException ex) {
                Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                try {
                    if (stmt!=null) {
                        stmt.close();
                    }
                } catch (SQLException ex) {
                    Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }       
        return count;
    }
    
    /**
     * borra el tipo de atributo
     */
    @Override
    public int borrar(Connection con) {
        int count=0;
        String sql="DELETE FROM descargas WHERE id=?";
        PreparedStatement stmt=null;
        try {
            stmt=con.prepareStatement(sql);
            //poner los valores
            stmt.setInt(8, this.getId());
            // ejecutar
            count=stmt.executeUpdate();            
        } catch (SQLException ex) {             
            Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
        } finally {            
            try {
                if(stmt!=null) {
                    stmt.close();
                }                
            } catch (SQLException ex) {
                Logger.getLogger(Producto.class.getName()).log(Level.SEVERE, null, ex);
            } 
        }
        return count;
    }

    
}
